home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / diskutil / noahdi.zoo / noahdi / dma.h < prev    next >
C/C++ Source or Header  |  1992-05-24  |  2KB  |  69 lines

  1. /*
  2.     File: DMA.H               Atari ST DMA device.
  3.  
  4.     Oct 1988. V1.00 T.H. Schipper
  5. */
  6. /* References:
  7.  
  8.  * Atari Toolkit page 933 
  9.  * c't Magazin 88/3  page 265 
  10. */
  11. /*
  12. Copyright (c) 1988 - 1991 by Ted Schipper.
  13.  
  14. Permission to use, copy, modify, and distribute this software and its
  15. documentation for any purpose and without fee is hereby granted,
  16. provided that the above copyright notice appear in all copies and that
  17. both that copyright notice and this permission notice appear in
  18. supporting documentation.
  19.  
  20. This software is provided AS IS with no warranties of any kind.  The author
  21. shall have no liability with respect to the infringement of copyrights,
  22. trade secrets or any patents by this file or any part thereof.  In no
  23. event will the author be liable for any lost revenue or profits or
  24. other special, indirect and consequential damages.
  25. */
  26.  
  27. #define DMA_ADDR 0xFF8600L      /* DMA device addres */
  28.  
  29. #define DMA      ((struct dma_chip *) DMA_ADDR)
  30.  
  31.  
  32. struct dma_chip {
  33.              short reserved[2]; /* reserved registers */
  34.              short DATA;        /* controller & sector count reg */
  35.              short MODE;        /* mode & status register */
  36.              char  ADDR[6];     /* base addres. High/Mid/Low */
  37.                  } ;
  38.  
  39.  
  40. /* pseudo names */
  41.  
  42. #define SECT_CNT     DATA
  43. #define STATUS       MODE
  44.  
  45. /* offset into addr, odd bytes used only */
  46.  
  47. #define HIGH         1
  48. #define MID          3
  49. #define LOW          5
  50.  
  51. /* Mode Register bits */
  52.  
  53. #define NOT_USED     0x0001     /* not used bit */
  54. #define A0           0x0002     /* A0 line, A1 on DMA port */
  55. #define A1           0x0004     /* A1 line, not used on DMA port */
  56. #define HDC          0x0008     /* HDC / FDC register select */
  57. #define SC_REG       0x0010     /* Sector count register select */
  58. #define RESERVED5    0x0020     /* reserved for future expansion ? */
  59. #define RESERVED6    0x0040     /* bit has no function */
  60. #define NO_DMA       0x0080     /* disable / enable DMA transfer */
  61. #define DMA_WR       0x0100     /* Write to / Read from DMA port */
  62.  
  63. /* Status Register bits */
  64.  
  65. #define DMA_OK       0x0001     /* DMA transfer went OK */
  66. #define SC_NOT_0     0x0002     /* Sector count register not zero */
  67. #define DATA_REQ     0x0004     /* DRQ line state */
  68.  
  69.